//
//  WBStatusTableViewCell.swift
//  WBWeiBo
//
//  Created by 王斌 on 16/7/13.
//  Copyright © 2016年 王斌. All rights reserved.
//

import UIKit
import SnapKit

/*
    分析出三大视图
         1.原创微博视图
         2.转发微博视图
         3.toolbar视图
*/



//  首页cell子空间的间距
let HomeCellMargin:CGFloat = 10

//  微博首页cell
class WBStatusTableViewCell: UITableViewCell {
    
    //  记录toolbar顶部约束
    var toolbartopConstraint:Constraint?
    
    //  使用ViewModel模型
    var statusViewModel:WBStatusViewModel?{
        
        didSet {
            //  给原创微博视图设置需要的视图模型
            orignalView.statusViewModel = statusViewModel
            
            //  卸载约束
            toolbartopConstraint?.uninstall()
            
            //  判断是否有转发微博对象
            if statusViewModel?.status?.retweeted_status != nil{
                
                //  有转发微博数据
                //  给转发微博视图设置需要的视图模型,显示转发微博视图,更新约束
               retweetView.statusViewModel = statusViewModel
                
                retweetView.hidden = false
                toolBar.snp_updateConstraints(closure: { (make) -> Void in
                    
                    // 记录更新的约束
                    self.toolbartopConstraint = make.top.equalTo(retweetView.snp_bottom).constraint
                })
            }else{
                
                //  没有转发微博数据,隐藏转发微博视图,更新约束
                retweetView.hidden = true
                
                toolBar.snp_updateConstraints(closure: { (make) -> Void in
                    //  记录更新的约束
                    self.toolbartopConstraint = make.top.equalTo(orignalView.snp_bottom).constraint
                })
            }
            
            //  给toolbar视图设置需要的视图模型
            toolBar.statusViewModel = statusViewModel
        }
    }
    
    
    //  MARK :  --  懒加载控件
    //  原创微博视图
    private lazy var orignalView:WBStatusOriginalView = WBStatusOriginalView()
    
    //  toolbar
    private lazy var toolBar:WBStatusToolBar = WBStatusToolBar()
    
    //  转发微博视图
    private lazy var retweetView:WBStatusRetweetView = WBStatusRetweetView()
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    
    
    //  添加视图设置约束
    private func setupUI(){
        
        //  添加控件
        contentView.addSubview(orignalView)
        contentView.addSubview(retweetView)
        contentView.addSubview(toolBar)
     
        orignalView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(contentView).offset(8)
            make.leading.equalTo(contentView)
            make.trailing.equalTo(contentView)
        }
        
        retweetView.snp_makeConstraints { (make) -> Void in
           make.top.equalTo(orignalView.snp_bottom)
            make.leading.equalTo(orignalView)
            make.trailing.equalTo(orignalView)
        }
        
        
        toolBar.snp_makeConstraints { (make) -> Void in
            self.toolbartopConstraint = make.top.equalTo(retweetView.snp_bottom).constraint
            make.leading.equalTo(contentView)
            make.trailing.equalTo(contentView)
            make.height.equalTo(35)
        }
        
        //  非常重要的约束,确定cell的高度, = contentView的底部= toolbar底部约束
        //  约束一定建全
        contentView.snp_makeConstraints { (make) -> Void in
            make.bottom.equalTo(toolBar)
            make.top.equalTo(self)
            make.leading.equalTo(self)
            make.trailing.equalTo(self)
        }
    }

}
